// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Config Screen Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

// Aliases
private alias 0 : START_UP
private alias 1 : SLIDE_IN
private alias 2 : MAIN_MENU_IDLE
private alias 3 : MAIN_MENU_SLIDE_OUT
private alias 4 : MAIN_MENU_OUTSIDE
private alias 5 : MAIN_MENU_SLIDE_IN
private alias 6 : BACK_TO_TITLE
private alias 7 : DELETE_RECORD
private alias 8 : INACTIVE
private alias 9 : SLIDE_IN_2

private alias object.value0 : boxthing


// Static Values
public value SRank.time = 0;
public value ARank.time = 0;
public value BRank.time = 0;
public value CRank.time = 0;


// Tables

event ObjectMain
	switch object.state
	case 0
		object.inkEffect = INK_ALPHA
		object.alpha = 0
		object.drawOrder = 6
		object.state++
		PlaySfx(SfxName[Window Open], 0)
		break
	case 1
		temp0 = 298
		temp0 -= boxthing
		temp0 >>= 3
		boxthing += temp0
		temp0 = 216
		temp0 -= object.value5
		temp0 >>= 3
		object.value5 += temp0
		if boxthing >= 288
			boxthing = 288
			object.value5 = 208
			object.state++
		end if
		break
	case 2
		if object.alpha < 256
			object.value3 = object.value4
			object.alpha += 16
		else
			object.state++
		end if
		break
	case 3
			if inputPress.left == 1
				object.value3--
				if object.value3 < 0
					object.value3 = 2
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.right == 1
				object.value3++
				if object.value3 > 2
					object.value3 = 0
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.buttonB == 1
				object.state = 4
				PlaySfx(SfxName[Window Close], 0)
			end if
		break
	case 4
		if object.alpha > 0
			object.alpha -= 16
		else
			object.state++
		end if
		break
	case 5
		temp0 = 0
		temp0 -= boxthing
		temp0 >>= 3
		boxthing += temp0
		temp0 = 0
		temp0 -= object.value5
		temp0 >>= 3
		object.value5 += temp0
		if boxthing < 4
			boxthing = 0
			object.value5 = 0
			object.state = 8
			foreach (TypeName[TimeAttack], arrayPos0, ALL_ENTITIES)
				object[arrayPos0].state = MAIN_MENU_IDLE
			next
		end if
		break
	case 6
		if object.alpha > 0
			object.alpha -= 16
		else
			object.state++
		end if
		break
	case 7
		temp0 = 0
		temp0 -= boxthing
		temp0 >>= 3
		boxthing += temp0
		temp0 = 0
		temp0 -= object.value5
		temp0 >>= 3
		object.value5 += temp0
		if boxthing < 4
			arrayPos2 = 410
			arrayPos2 += object.value4
			saveRAM[arrayPos2] = 0
			arrayPos3 = 447
			arrayPos3 += object.value4
			saveRAM[arrayPos3] = 0
			PlaySfx(SfxName[Release], 0)
			WriteSaveRAM()
			boxthing = 0
			object.value5 = 0
			object.state = 8
			foreach (TypeName[TimeAttack], arrayPos0, ALL_ENTITIES)
				object[arrayPos0].state = MAIN_MENU_IDLE
			next
		end if
		break
	case 8
		break
	end switch
end event


event ObjectDraw
	temp0 = boxthing
	temp0 >>= 1
	FlipSign(temp0)
	temp0 += screen.xcenter
	temp1 = object.value5
	temp1 >>= 1
	FlipSign(temp1)
	temp1 += screen.ycenter
	DrawRect(temp0, temp1, boxthing, object.value5, 0, 0, 96, 255)
	temp0 += 2
	temp1 += 2
	temp4 = boxthing
	temp4 -= 4
	temp3 = object.value5
	temp3 -= 4
	DrawRect(temp0, temp1, temp4, temp3, 0, 32, 192, 255)
	DrawSpriteScreenFX(11, FX_INK, 69, 18)
	temp0 = 28
	temp1 = 68

	switch object.value3
		case 0
			temp0 += 20
			DrawSpriteScreenFX(19, FX_INK, temp0, temp1)
			SRank.time = 003099
			ARank.time = 004599
			BRank.time = 005000
			CRank.time = 005599
		break
		case 1
			DrawSpriteScreenFX(20, FX_INK, temp0, temp1)
			temp0 += 220
			temp1 -= 10
			DrawSpriteScreenFX(12, FX_INK, temp0, temp1)
			SRank.time = 005099
			ARank.time = 006099
			BRank.time = 007599
			CRank.time = 009099
		break
		case 2
			DrawSpriteScreenFX(20, FX_INK, temp0, temp1)
			temp0 += 220
			temp1 -= 10
			DrawSpriteScreenFX(13, FX_INK, temp0, temp1)
			SRank.time = 005099
			ARank.time = 006599
			BRank.time = 008899
			CRank.time = 009099
		break
	end switch

	temp0 = 238
	temp1 = 78
	temp4 -= 5

	///////
	temp4 -= 19
	DrawSpriteScreenXY(14, temp4, temp1)
	DrawSpriteScreenXY(15, temp4, temp1)
	temp4 += 19

	temp4 += 4
	temp5 = SRank.time
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5

	temp4 -= 35
	DrawNumbers(0, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.milliseconds, 2, 8, 1)
	///////

	temp1 += 25

	///////
	temp4 -= 30
	DrawSpriteScreenXY(14, temp4, temp1)
	DrawSpriteScreenXY(16, temp4, temp1)
	temp4 += 29

	temp4 -= 10
	temp4 += 4
	temp5 = ARank.time
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5

	temp4 -= 35
	DrawNumbers(0, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.milliseconds, 2, 8, 1)
	///////

	temp1 += 25

	///////
	temp4 -= 30
	DrawSpriteScreenXY(14, temp4, temp1)
	DrawSpriteScreenXY(17, temp4, temp1)
	temp4 += 29

	temp4 -= 10
	temp4 += 4
	temp5 = BRank.time
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5

	temp4 -= 35
	DrawNumbers(0, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.milliseconds, 2, 8, 1)
	///////

	temp1 += 25

	///////
	temp4 -= 30
	DrawSpriteScreenXY(14, temp4, temp1)
	DrawSpriteScreenXY(18, temp4, temp1)
	temp4 += 30

	temp4 -= 10
	temp4 += 4
	temp5 = CRank.time
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5

	temp4 -= 35
	DrawNumbers(0, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(0, temp4, temp1, stage.milliseconds, 2, 8, 1)
	///////



	
end event


event ObjectStartup
	LoadSpriteSheet("Menu/Menu.gif")
	SpriteFrame(-25, 37, 8, 12, 229, 148)			// 0
	SpriteFrame(-24, 37, 6, 12, 150, 148)			// 1
	SpriteFrame(-25, 37, 8, 12, 157, 148)			// 2
	SpriteFrame(-25, 37, 8, 12, 165, 148)			// 3
	SpriteFrame(-25, 37, 8, 12, 175, 148)			// 4
	SpriteFrame(-25, 37, 8, 12, 183, 148)			// 5
	SpriteFrame(-25, 37, 8, 12, 193, 148)			// 6
	SpriteFrame(-25, 37, 8, 12, 201, 148)			// 7
	SpriteFrame(-25, 37, 8, 12, 211, 148)			// 8
	SpriteFrame(-25, 37, 8, 12, 220, 148)			// 9

	SpriteFrame(-27, 39, 8, 12, 151, 168)			//10 "

	SpriteFrame(51, 0, 187, 35, 335, 279)			//11 Title

	SpriteFrame(59, 27, 35, 12, 183, 127)			//12 Act 1
	SpriteFrame(59, 27, 35, 12, 230, 127)			//13 Act 2

	SpriteFrame(-107,44, 25, 4, 150, 265)			//14 rank hold
	SpriteFrame(-105,32, 17, 15, 150, 249)			//15 S rank
	SpriteFrame(-105,32, 18, 15, 168, 249)			//16 A rank
	SpriteFrame(-105,32, 18, 15, 187, 249)			//17 B rank
	SpriteFrame(-105,32, 18, 15, 206, 249)			//18 C rank

	SpriteFrame(65, 13, 200, 12, 151, 78)			//19 WI
	SpriteFrame(59, 13, 214, 12, 149, 102)			//20 SS


end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
